<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="SA97e" id="SA97e"><span data-lake-id="uace8f2d2" id="uace8f2d2">典型回答</span></h1>
  <p data-lake-id="u5ce8355c" id="u5ce8355c"><br></p>
  <p data-lake-id="u1e1dbd82" id="u1e1dbd82"><span data-lake-id="u53b6fc8f" id="u53b6fc8f">Kafka 的整体架构比较简单，是显式分布式架构，主要由 Producer（生产者）、broker（Kafka集群）和 consumer（消费者） 组成。</span></p>
  <p data-lake-id="u7f9092b2" id="u7f9092b2"><span data-lake-id="u3b9bd8a2" id="u3b9bd8a2" class="lake-fontsize-12" style="color: rgb(73, 73, 73)">​</span><br></p>
  <p data-lake-id="u5c1c2284" id="u5c1c2284"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1678605104660-374d09d6-5ac2-49cf-920d-3474f11275f6.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_49%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="uaddf8106" id="uaddf8106"><br></p>
  <p data-lake-id="u923d241c" id="u923d241c"><strong><span data-lake-id="u33fe338a" id="u33fe338a">生产者（Producer）</span></strong><span data-lake-id="ud7ae01f8" id="ud7ae01f8">：生产者负责将消息发布到Kafka集群中的一个或多个主题(Topic)，每个Topic包含一个或多个分区（Partition）。</span></p>
  <p data-lake-id="u31814ff3" id="u31814ff3"><span data-lake-id="uc2731ad0" id="uc2731ad0">​</span><br></p>
  <blockquote data-lake-id="u2a43e624" id="u2a43e624">
   <p data-lake-id="uc1fdc3e6" id="uc1fdc3e6"><span data-lake-id="u5e0212f1" id="u5e0212f1">主题：Topic。主题是承载消息的逻辑容器，在实际使用中多用来区分具体的业务。</span></p>
   <p data-lake-id="u155e8cb5" id="u155e8cb5"><span data-lake-id="u53463ec6" id="u53463ec6">分区：Partition。一个有序不变的消息序列。每个主题下可以有多个分区。</span></p>
  </blockquote>
  <p data-lake-id="u705d1bf7" id="u705d1bf7"><br></p>
  <p data-lake-id="u0c4fe71b" id="u0c4fe71b"><strong><span data-lake-id="u34f6b684" id="u34f6b684">消费者（Consumer</span></strong><span data-lake-id="uee05462a" id="uee05462a">）：消费者负责从Kafka集群中的一个或多个主题消费消息，并将消费的偏移量（Offset）提交回Kafka以保证消息的顺序性和一致性。</span></p>
  <p data-lake-id="uefdfbdf0" id="uefdfbdf0"><span data-lake-id="u8cd4a3c9" id="u8cd4a3c9">​</span><br></p>
  <blockquote data-lake-id="u41e57d5e" id="u41e57d5e">
   <p data-lake-id="u42cf451f" id="u42cf451f"><span data-lake-id="uf9630ee4" id="uf9630ee4">偏移量：Offset。表示分区中每条消息的位置信息，是一个单调递增且不变的值。</span></p>
  </blockquote>
  <p data-lake-id="ucf0070cd" id="ucf0070cd"><br></p>
  <p data-lake-id="u0feae972" id="u0feae972"><strong><span data-lake-id="ue2cf2521" id="ue2cf2521">Kafka集群</span></strong><span data-lake-id="udbc53cff" id="udbc53cff">：Kafka集群是由多个Kafka节点（Broker）组成的分布式系统。每个节点都可以存储一个或多个主题的分区副本，以提供高可用性和容错能力。</span></p>
  <p data-lake-id="ua939465e" id="ua939465e"><span data-lake-id="u418c31ab" id="u418c31ab">​</span><br></p>
  <blockquote data-lake-id="u757e2668" id="u757e2668">
   <p data-lake-id="uf1b07f4b" id="uf1b07f4b"><strong><span data-lake-id="uf3b09779" id="uf3b09779">Leader Broker</span></strong><span data-lake-id="u79604de1" id="u79604de1">：Leader Broker 是分区的主副本，它是负责处理消息读写请求的节点。生产者将消息发送到 Leader Broker，消费者从 Leader Broker 中拉取消息。</span></p>
   <p data-lake-id="uf93829c3" id="uf93829c3"><strong><span data-lake-id="u0825762e" id="u0825762e">Follower Broke</span></strong><span data-lake-id="u6a9b4825" id="u6a9b4825">r：Follower Broker 是 Leader Broker 的备份节点，它负责与 Leader Broker 进行数据同步，以保持自己的数据与 Leader Broker 保持一致。</span></p>
   <p data-lake-id="uc9c82752" id="uc9c82752"><strong><span data-lake-id="u58d0d9f4" id="u58d0d9f4">​</span></strong><br></p>
   <p data-lake-id="uc5686fa9" id="uc5686fa9"><strong><span data-lake-id="u1e52c6cd" id="u1e52c6cd">在集群中，每个分区都有一个 Leader Broker 和多个 Follower Broker，只有 Leader Broker 才能处理生产者和消费者的请求，而 Follower Broker 只是 Leader Broker 的备份，用于提供数据的冗余备份和容错能力。如果 Leader Broker 发生故障，Kafka 集群会自动将 Follower Broker 提升为新的 Leader Broker，从而实现高可用性和容错能力。</span></strong></p>
  </blockquote>
  <p data-lake-id="u19a0bbee" id="u19a0bbee"><br></p>
  <p data-lake-id="ubfd86be5" id="ubfd86be5"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1678605349958-073cfb91-5e7c-49c2-bc64-d7b0091a863a.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_31%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u74be3ebc" id="u74be3ebc"><span data-lake-id="u93d8ab5d" id="u93d8ab5d" class="lake-fontsize-12" style="color: rgb(55, 65, 81); background-color: rgb(247, 247, 248)">​</span><br></p>
  <p data-lake-id="u70dce167" id="u70dce167"><strong><span data-lake-id="u35ded61c" id="u35ded61c">ZooKeeper</span></strong><span data-lake-id="u8a986bc4" id="u8a986bc4">：ZooKeeper是Kafka集群中使用的分布式协调服务，用于维护Kafka集群的状态和元数据信息，例如主题和分区的分配信息、消费者组和消费者偏移量等。</span></p>
 </body>
</html>